/*
 * The contents of this file are subject to the MonetDB Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.monetdb.org/Legal/MonetDBLicense
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations
 * under the License.
 *
 * The Original Code is the MonetDB Database System.
 *
 * The Initial Developer of the Original Code is CWI.
 * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
 * Copyright August 2008-2014 MonetDB B.V.
 * All Rights Reserved.
 */

/*
 * This file was generated by using the script sql_cast.sh.
 */

#define CAST_INTEGER_2_NUMERIC_2(T1,T2)					\
sql5_export str T1##_dec2_##T2(T2 *res, const int *s1, const T1 *v);	\
sql5_export str bat##T1##_dec2_##T2(bat *res, const int *s1, const bat *v); \
sql5_export str T1##_dec2dec_##T2(T2 *res, const int *S1, const T1 *v, const int *d2, const int *S2); \
sql5_export str bat##T1##_dec2dec_##T2(bat *res, const int *S1, const bat *v, const int *d2, const int *S2); \
sql5_export str T1##_num2dec_##T2(T2 *res, const T1 *v, const int *d2, const int *s2); \
sql5_export str bat##T1##_num2dec_##T2(bat *res, const bat *v, const int *d2, const int *s2)

#define CAST_INTEGER_2_NUMERIC_1(T1)	\
CAST_INTEGER_2_NUMERIC_2(T1,bte);	\
CAST_INTEGER_2_NUMERIC_2(T1,sht);	\
CAST_INTEGER_2_NUMERIC_2(T1,int);	\
CAST_INTEGER_2_NUMERIC_2(T1,wrd);	\
CAST_INTEGER_2_NUMERIC_2(T1,lng);	\
CAST_INTEGER_2_NUMERIC_2(T1,flt);	\
CAST_INTEGER_2_NUMERIC_2(T1,dbl)

CAST_INTEGER_2_NUMERIC_1(bte);
CAST_INTEGER_2_NUMERIC_1(sht);
CAST_INTEGER_2_NUMERIC_1(int);
CAST_INTEGER_2_NUMERIC_1(wrd);
CAST_INTEGER_2_NUMERIC_1(lng);


#define CAST_FLOATINGPOINT_2_INTEGER_2(T1,T2)				\
sql5_export str T1##_num2dec_##T2(T2 *res, const T1 *v, const int *d2, const int *s2); \
sql5_export str bat##T1##_num2dec_##T2(bat *res, const bat *v, const int *d2, const int *s2)

#define CAST_FLOATINGPOINT_2_INTEGER_1(T1)	\
CAST_FLOATINGPOINT_2_INTEGER_2(T1,bte);		\
CAST_FLOATINGPOINT_2_INTEGER_2(T1,sht);		\
CAST_FLOATINGPOINT_2_INTEGER_2(T1,int);		\
CAST_FLOATINGPOINT_2_INTEGER_2(T1,wrd);		\
CAST_FLOATINGPOINT_2_INTEGER_2(T1,lng)

CAST_FLOATINGPOINT_2_INTEGER_1(flt);
CAST_FLOATINGPOINT_2_INTEGER_1(dbl);
